﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Zero.Core.Domain;
using Zero.POCO;

namespace Zero.Presenter
{
    public class CiblePresenter : ICiblePresenter
    {
        private ICibleView cibleView;
        private IRepository<Filter, Guid> FilterRepository;

        public CiblePresenter(ICibleView cible, IRepository<Filter, Guid> repository)
        {
            cibleView = cible;
            FilterRepository = repository;
        }

        public void Display()
        {
            cibleView.Filtres = FilterRepository.FindAll().ToList();
        }

        public void WriteChanges(Filter filtre)
        {
            filtre.Equipements=FiltreFactory.AssembleFiltre(cibleView.ListeEquipement);
            filtre.Genres = FiltreFactory.AssembleFiltre(cibleView.listeGenre);
            filtre.Habitats = FiltreFactory.AssembleFiltre(cibleView.listeHabitat);
            filtre.NbChambres = FiltreFactory.AssembleFiltre(cibleView.listeNbChambre);
            filtre.NbVoitures = FiltreFactory.AssembleFiltre(cibleView.listeNbVoiture);
            filtre.NiveauxInstructions = FiltreFactory.AssembleFiltre(cibleView.listeNivInstruc);
            filtre.RevenueTotalFoyers = FiltreFactory.AssembleFiltre(cibleView.listeRevenue);
            filtre.SituationMatrimonials = FiltreFactory.AssembleFiltre(cibleView.listeMatromonia);
            filtre.StatutFamiliales = FiltreFactory.AssembleFiltre(cibleView.listeStatutFamil);
            filtre.TypeHabitations = FiltreFactory.AssembleFiltre(cibleView.listeTypeHabitat);
            filtre.CSEs = FiltreFactory.AssembleFiltre(cibleView.listeCSE);
            filtre.CSPs = FiltreFactory.AssembleFiltre(cibleView.listeCSP);
            FilterRepository.Save(filtre);
        }
    }

    public interface ICiblePresenter
    {
        void Display();
        void WriteChanges(Filter filtre);
    }
    public interface ICibleView
    {
        List<int> ListeEquipement { get; set; }
        List<int> listeCSE { get; set; }
        List<int> listeCSP { get; set; }
        List<int> listeNbChambre { get; set; }
        List<int> listeHabitat { get; set; }
        List<int> listeNbVoiture { get; set; }
        List<int> listeNivInstruc { get; set; }
        List<int> listeRevenue { get; set; }
        List<int> listeMatromonia { get; set; }
        List<int> listeStatutFamil { get; set; }
        List<int> listeTypeHabitat { get; set; }
         List<int> listeGenre{ get; set; }
        List<Filter> Filtres { get; set; }
    }


}
